/*
 * @Description: 
 * @Autor: Bingo
 * @Date: 2024-07-09 19:12:57
 * @LastEditors: Bingo
 * @LastEditTime: 2024-07-16 14:12:02
 */
import intro from 'intro.js' // introjs库
let defaultIntroOption = {
    // 参数对象
    prevLabel: '上一步',
    nextLabel: '下一步',
    skipLabel: '跳过',
    doneLabel: '欢迎使用',// 结束按钮
    tooltipClass: 'intro-tooltip' /* 引导说明文本框的样式 */,
    // highlightClass: 'intro-highlight', /* 说明高亮区域的样式 */
    exitOnEsc: true /* 是否使用键盘Esc退出 */,
    exitOnOverlayClick: false /* 是否允许点击空白处退出 */,
    keyboardNavigation: false /* 是否允许键盘来操作 */,
    showBullets: false /* 是否使用点显示进度 */,
    showProgress: false /* 是否显示进度条 */,
    scrollToElement: true /* 是否滑动到高亮的区域 */,
    overlayOpacity: 0.5, // 遮罩层的透明度 0-1之间
    positionPrecedence: ['bottom', 'top', 'right', 'left'] /* 当位置选择自动的时候，位置排列的优先级 */,
    disableInteraction: false /* 是否禁止与元素的相互关联 */,
    hidePrev: true /* 是否在第一步隐藏上一步 */,
    // hideNext: true, /* 是否在最后一步隐藏下一步 */
    steps: [] /* steps步骤，可以写个工具类保存起来 
        item[] 
        interface item {
			title: String  //引导标题,
			element: String // 需要引导的HTMLELEMENT,
			intro: String // 提示语 这里可以放标签的
        }
    */
}
class IntroStep {
    IntroOption: any;
    constructor(options: any) {
        this.IntroOption = { ...defaultIntroOption, ...options };
    }
    setOptions() {
        let introInstance = intro()
        introInstance.setOptions(this.IntroOption)
        return introInstance
    }

}
/* 
    开启引导
    parmas:Object
    1.lcName:String
    2.options Object
    3.oncomplete // 点击结束按钮后执行的事件
    4.onexit // 点击跳过按钮后执行的事件
    5.onbeforeexit // 确认完毕之后执行的事件
*/
const startIntroGuide = (parmas: { lcName: string; options: any; oncomplete: () => any; onexit: () => any; onbeforeexit: () => any; }) => {
    let lcName = JSON.parse(localStorage.getItem('pro__SET_INFO')||'{}').value.login + '__INTRO__' + parmas.lcName
    if (localStorage.getItem(lcName) === null || localStorage.getItem(lcName) !== '1') {
        let intro = new IntroStep(parmas?.options || {});
        intro.setOptions().oncomplete(() => {
            localStorage.setItem(lcName, '1');
            parmas.oncomplete && parmas.oncomplete()
        })
            // 点击跳过按钮后执行的事件
            .onexit(() => {
                parmas.onexit && parmas.onexit()
            })
            // 确认完毕之后执行的事件
            .onbeforeexit(() => parmas.onbeforeexit && parmas.onbeforeexit())
            .start();
    }
    // 这里将实例返回 方便页面销毁 intro = null
    return intro
}

export default startIntroGuide